#define DEBUG
#include <cstdio>
#include <cstring>

using namespace std;

typedef long long ll;

const int maxn=100000, maxsize=524288, mods=998244353;

ll qpower(ll a, int n) {
  if (!n) {
    return 1;
  }
  ll s=1;
  for (; n>1; n>>=1) {
    if (n&1) {
      s = s*a%mods;
    }
    a = a*a%mods;
  }
  return a*s%mods;
}

const ll unmaxsize=qpower(maxsize, mods-2);

ll getW(int len) {
  const int g=3;
  return qpower(g, (mods-1)/len);
}

int pos[maxsize];

void initPos(int n, int pos[]) {
  int l;
  for (l=0; (1<<l)<n; l++);
  l--;
  for (int i=0; i<n; i++) {
    pos[i] = (pos[i>>1]>>1)|((i&1)<<l);
  }
}

void ntt(int n, ll a[], int pos[], bool rev) {
  for (int i=0; i<n; i++) {
    if (pos[i]>i) {
      int t;
      t=a[i], a[i]=a[pos[i]], a[pos[i]]=t;
    }
  }

  for (int len=1; len<n; len*=2) {
    ll t=getW(len*2);
    t = rev ? qpower(t, mods-2) : t;
    for (int i=0; i<n; i+=2*len) {
      ll w=1;
      for (int j=0; j<len; j++) {
	ll x=a[i+j], y=a[i+len+j]*w%mods;
	a[i+j] = (x+y)%mods;
	a[i+len+j] = (x+mods-y)%mods;
	w = w*t%mods;
      }
    }
  }
}

void mul(int n, ll ta[], ll tb[], ll c[]) {
  static ll a[maxsize], b[maxsize];
  memset(a, 0, sizeof a);
  memset(b, 0, sizeof b);
  for (int i=0; i<n; i++) {
    a[i] = ta[i];
    b[i] = tb[i];
  }
  ntt(maxsize, a, pos, false);
  ntt(maxsize, b, pos, false);
  for (int i=0; i<maxsize; i++) {
    c[i] = a[i]*b[i]%mods;
  }
  ntt(maxsize, c, pos, true);
  for (int i=0; i<maxsize; i++) {
    c[i] = c[i]*unmaxsize%mods;
  }
  for (int i=0; i<n; i++) {
    c[i] = (c[i]+c[i+n])%mods;
  }
  for (int i=n; i<maxsize; i++) {
    c[i] = 0;
  }
}

void qpower(int len, ll a[], ll n) {
  if (!n) {
    a[0] = 1;
    for (int i=1; i<=len; i++) {
      a[i] = 0;
    }
    return;
  }
  static ll s[maxsize];
  s[0] = 1;
  for (; n>1; n>>=1) {
    if (n&1) {
      mul(len, s, a, s);
    }
    mul(len, a, a, a);
  }
  mul(len, a, s, a);
}

int main() {
  freopen("B.in", "r", stdin);
  freopen("B.out", "w", stdout);

  initPos(maxsize, pos);

  static int a[maxn+1];
  static ll p[maxsize];
  int n;
  ll k;
  scanf("%d %lld", &n, &k);
  for (int i=1; i<=n; i++) {
    scanf("%d", a+i);
    a[0] += a[i];
  }
  for (int i=1; i<n; i++) {
    p[i] = p[2*n-i] = a[i]*qpower(a[0]*2, mods-2)%mods;
  }
  p[n] = a[n]*qpower(a[0], mods-2)%mods;

  qpower(2*n, p, k);

  for (int i=0; i<n; i++) {
    p[i] = (p[i]+p[2*n-i])%mods;
  }
  for (int i=0; i<=n; i++) {
    printf("%lld ", p[i]);
  }
  
  fclose(stdin);
  fclose(stdout);
  return 0;
}
